package com.itheima.springbootwebtlias.commons;

import com.itheima.springbootwebtlias.exception.BaseException;
import com.itheima.springbootwebtlias.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


//定义全局异常处理器类
@Slf4j
@RestControllerAdvice//底层使用AOP动态代理的思想，实现处理controller层所有的异常
//此类中的处理异常的方法，具备直接返回处理结果给前端能力
public class GloablExceptionHandler {

    //2.定义异常的方法
    @ExceptionHandler(Exception.class)
    public Result defaultExceptionHandler(Exception e) {
        e.printStackTrace();//打印异常信息
        //3.异常处理逻辑
        //3.1记录异常信息
//        log.error("服务器异常:{}", e.getMessage());
        log.error("服务器异常:{}", e.getMessage());
        //3.2通知运维人员+人员开发，紧急修复
        log.info("通知运维人员+人员开发，紧急修复");
        //3.3返回一场信息给前端
        return Result.error("服务器异常，请稍后再试");
    }

    //2.定义异常的方法
    @ExceptionHandler(BaseException.class)
    public Result defaultCommomsHandler(BaseException e) {
        //3.异常处理逻辑
        //3.1记录异常信息
//        log.error("服务器异常:{}", e.getMessage());
        log.error("服务器异常:{}", e.getMessage());
        //3.2返回一场信息给前端
        return Result.error(e.getMessage());
    }


}
